﻿using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Negocio.catalogos;

namespace Presentacion.controlasistencia
{
    public partial class coordinador : System.Web.UI.Page
    {
        catalogoUsuario _objUsuarios = new catalogoUsuario();
        catalogoDocente _objCatalogoDocente = new catalogoDocente();
        encriptaje _objEncriptaje = new encriptaje();
        StringBuilder codigoHTML = new StringBuilder();

        protected void Page_Load(object sender, EventArgs e)
        {

            if (!IsPostBack)
            {
                if (Session["admin"] != null)
                {

                }
                else
                {
                    Response.Redirect("Default.aspx");
                }
            }            
        }

        /// <summary>
        /// Carga contenido html de los usuarios activados como coordinadores
        /// </summary>
        private void cargarTable()
        {
            codigoHTML.Clear();
            var resultUsuarios = _objUsuarios.consultarUsuariosALL();

            if (resultUsuarios.Count != 0)
            {
                foreach (var item in resultUsuarios)
                {
                    var resultDocente = _objCatalogoDocente.consultarDocenteXIdcedula(item.documento);

                    if (resultDocente != null)
                    {
                        codigoHTML.Append("<tr>" +
                        "<td>" + item.documento + "</td>" +
                        "<td>" + resultDocente.nombre + "</td>" +
                        "<td>" + resultDocente.carrera.carrera + "</td>" +
                        "<td>" + item.anio + "</td>" +
                        "<td><a class='btn btn-orange' data-id='" + _objEncriptaje.encodeControlAsistencia(item.idDocente) + "' data-estado='false'>Desactivar</a></td>" +
                        "<td> <a class='open-Modal btn btn-green' data-id='" + _objEncriptaje.encodeControlAsistencia(item.idDocente) + "' data-anio='" + item.anio + "' data-toggle='modal' data-target='#modificarCoordinador'>Modificar</a></td>" +
                        "</tr>");
                    }
                }
                //contenidoCoordinadores.InnerHtml = codigoHTML.ToString();
            }
            else
            {
                codigoHTML.Append("<tr>" +
                        "Usuarios no encontrados" +
                        "</tr>");
                //contenidoCoordinadores.InnerHtml = codigoHTML.ToString();
            }
        }

        /// <summary>
        /// Carga contenido Html de los usuarios desactivados como coordinadores
        /// </summary>
        private void cargarTableDesactivado()
        {
            codigoHTML.Clear();
            var resultUsuarios = _objUsuarios.consultarUsuariosDesactivados();

            if (resultUsuarios.Count != 0)
            {
                foreach (var item in resultUsuarios)
                {
                    var resultDocente = _objCatalogoDocente.consultarDocenteXIdcedula(item.documento);

                    if (resultDocente != null)
                    {
                        codigoHTML.Append("<tr>" +
                        "<td>" + item.documento + "</td>" +
                        "<td>" + resultDocente.nombre + "</td>" +
                        "<td>" + resultDocente.carrera.carrera + "</td>" +
                        "<td>" + item.anio + "</td>" +
                        "<td><a class='btn btn-orange' data-id='" + _objEncriptaje.encodeControlAsistencia(item.idDocente) + "' data-estado='true' >Activar</a></td>" +
                        "<td> <a class='open-Modal btn btn-green' data-id='" + _objEncriptaje.encodeControlAsistencia(item.idDocente) + "' data-anio='" + item.anio + "' data-toggle='modal' data-target='#modificarCoordinador'>Modificar</a></td>" +

                        "</tr>");
                    }
                }
                //contenidoDesactivado.InnerHtml = codigoHTML.ToString();
            }
            else
            {
                codigoHTML.Append("<tr>" +
                        "Usuarios no encontrados" +
                        "</tr>");
                //contenidoDesactivado.InnerHtml = codigoHTML.ToString();
            }
        }

        #region Boton Buscar Usuario
        protected void btnBuscar_Click(object sender, EventArgs e)
        {
            if (txtBuscar.Text != "")
            {
                var resultUsuario = _objUsuarios.consultarUsuariosXDocumento(txtBuscar.Text.Trim());
                if (resultUsuario == null)
                {
                    var resultDocente = _objCatalogoDocente.consultarDocenteXIdcedula(txtBuscar.Text.Trim());

                    if (resultDocente != null)
                    {
                        lblNombres.Text = resultDocente.nombre;
                        hddDocumento.Value = txtBuscar.Text.Trim();
                        hddIdDocente.Value = resultDocente.idDocente.ToString();
                        hddIdCarrera.Value = resultDocente.carrera.idCarrera.ToString();
                        lblCarrera.Text = resultDocente.carrera.carrera;
                        ddlAñoCoordinador.Enabled = true;
                        btnGuardarUsuario.Visible = true;

                    }
                    else
                    {
                        ClientScript.RegisterStartupScript(GetType(), "jsMensaje", "errorMessage('Docente no encontrado.');", true);
                    }
                }
                else
                {
                    if (resultUsuario.estado)
                    {
                        ClientScript.RegisterStartupScript(GetType(), "jsMensaje", "sucessMessage('Usuario se encuentra activo.');", true);
                    }
                    else
                    {
                        ClientScript.RegisterStartupScript(GetType(), "jsMensaje", "errorMessage('Usuario se encuentra inactivo.');", true);
                    }
                }

            }
            else
            {
                ClientScript.RegisterStartupScript(GetType(), "jsMensaje", "errorMessage('Debe ingresar un parámetro de busqueda.');", true);
            }
        }
        #endregion

        #region Boton Guardar Usuario
        protected void btnGuardarUsuario_Click(object sender, EventArgs e)
        {
            if (hddDocumento.Value != "" && ddlAñoCoordinador.SelectedItem.Value != "" && hddIdDocente.Value != "")
            {

                ClientScript.RegisterStartupScript(GetType(), "jsMensaje", "javascript:sucessMessage('" +
                    _objUsuarios.agregarUusuario(hddDocumento.Value, 2, int.Parse(hddIdDocente.Value), ddlAñoCoordinador.SelectedValue, Convert.ToInt32(hddIdCarrera.Value))
                    + "');", true);
                txtBuscar.Text = "";
                lblCarrera.Text = "";
                lblNombres.Text = "";
                ddlAñoCoordinador.ClearSelection();
                ClientScript.RegisterStartupScript(GetType(), "jsMensaje", "actualizarTabla();", true);
                //Timer1.Enabled = true;
            }
            else
            {
                ClientScript.RegisterStartupScript(GetType(), "jsMensaje", "errorMessage('Error llene todos los campos.');", true);

            }
        }
        #endregion

        protected void Timer1_Tick(object sender, EventArgs e)
        {
            Timer1.Enabled = false;
            Response.Redirect("coordinador.aspx");
        }

        #region Boton Modificar
        protected void btnModificar_Click(object sender, EventArgs e)
        {
            if (ddlModificarCoordinador.SelectedItem.Value != "" && hddIdDocente.Value != "")
            {
                int _idDocente = int.Parse(new encriptaje().decodeControlAsistencia(hddIdDocente.Value)); //Codigo de distribucion desencriptado

                ClientScript.RegisterStartupScript(GetType(), "jsMensaje", "javascript:sucessMessage('" +
                    _objUsuarios.modificarAnioUsuario(_idDocente, ddlModificarCoordinador.SelectedValue)
                    + "');", true);
                //cargarTable();
                //cargarTableDesactivado();
                ClientScript.RegisterStartupScript(GetType(), "jsMensaje", "actualizarTabla();", true);
            }
            else
            {
                ClientScript.RegisterStartupScript(GetType(), "jsMensaje", "errorMessage('Error llene todos los campos.');", true);

            }
        }
        #endregion

        /// <summary>
        /// Metodo para desactivar usuario como coordinador
        /// </summary>
        /// <param name="idDocente"></param>
        /// <param name="estado"></param>
        /// <returns>Mensaje de confirmacion</returns>
        [System.Web.Services.WebMethod(true)]
        public static string desactivar(string idDocente, string estado)
        {
            bool _estado = bool.Parse(estado);
            int _idDocente = int.Parse(new encriptaje().decodeControlAsistencia(idDocente)); //Codigo de distribucion desencriptado
            catalogoUsuario _objCatalogoUsuario = new catalogoUsuario();
            try
            {
                if (_objCatalogoUsuario.modificarEstadoUsuario(_idDocente, _estado))
                {
                    if (estado == "True")
                    {
                        return "Usuario Activado";
                    }
                    else
                    {
                        return "Usuario Desactivado.";
                    }
                }
                else
                {
                    return "Error al desactivar el usuario.";
                }
            }
            catch (Exception)
            {
                return "Error al desactivar el usuario.";
            }
        }

        /// <summary>
        /// Metodo web para ser utilizado con una funcion ajax para cargar codigo html de los usuarios desactivados
        /// </summary>
        /// <returns>Codigo Html</returns>
        [System.Web.Services.WebMethod(true)]
        public static string desactivados()
        {
            StringBuilder _html = new StringBuilder();
            encriptaje _objEncriptaje = new encriptaje();
            try
            {

                var resultUsuarios = new catalogoUsuario().consultarUsuariosDesactivados();

                if (resultUsuarios.Count != 0)
                {
                    foreach (var item in resultUsuarios)
                    {
                        var resultDocente = new catalogoDocente().consultarDocenteXIdcedula(item.documento);

                        if (resultDocente != null)
                        {
                            _html.Append("<tr>" +
                            "<td>" + item.documento + "</td>" +
                            "<td>" + resultDocente.nombre + "</td>" +
                            "<td>" + resultDocente.carrera.carrera + "</td>" +
                            "<td>" + item.anio + "</td>" +
                            "<td><a class='btn btn-orange' data-id='" + _objEncriptaje.encodeControlAsistencia(item.idDocente) + "' data-estado='true' >Activar</a></td>" +
                            "<td> <a class='open-Modal btn btn-green' data-id='" + _objEncriptaje.encodeControlAsistencia(item.idDocente) + "' data-anio='" + item.anio + "' data-toggle='modal' data-target='#modificarCoordinador'>Modificar</a></td>" +

                            "</tr>");
                        }
                    }
                    return _html.ToString();
                }
                else
                {
                    _html.Append("<tr>" +
                            "Usuarios no encontrados" +
                            "</tr>");
                    return _html.ToString();
                }
            }
            catch (Exception)
            {
                return "Error al cargar datos de tabla";
            }
        }

        /// <summary>
        /// Metodo web para ser utilizado con una funcion ajax para cargar codigo html de los usuarios activiados
        /// </summary>
        /// <returns>Codigo html</returns>
        [System.Web.Services.WebMethod(true)]
        public static string activados()
        {
            StringBuilder _html = new StringBuilder();
            encriptaje _objEncriptaje = new encriptaje();
            try
            {

                var resultUsuarios = new catalogoUsuario().consultarUsuariosALL();

                if (resultUsuarios.Count != 0)
                {
                    foreach (var item in resultUsuarios)
                    {
                        var resultDocente = new catalogoDocente().consultarDocenteXIdcedula(item.documento);

                        if (resultDocente != null)
                        {
                            _html.Append("<tr>" +
                            "<td>" + item.documento + "</td>" +
                            "<td>" + resultDocente.nombre + "</td>" +
                            "<td>" + resultDocente.carrera.carrera + "</td>" +
                            "<td>" + item.anio + "</td>" +
                            "<td><a class='btn btn-orange' data-id='" + _objEncriptaje.encodeControlAsistencia(item.idDocente) + "' data-estado='false'>Desactivar</a></td>" +
                            "<td> <a class='open-Modal btn btn-green' data-id='" + _objEncriptaje.encodeControlAsistencia(item.idDocente) + "' data-anio='" + item.anio + "' data-toggle='modal' data-target='#modificarCoordinador'>Modificar</a></td>" +
                            "</tr>");
                        }
                    }
                    return _html.ToString();
                }
                else
                {
                    _html.Append("<tr>" +
                            "Usuarios no encontrados" +
                            "</tr>");
                    return _html.ToString();
                }
            }
            catch (Exception)
            {
                return "Error al cargar datos de tabla";
            }
        }
    }
}